home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Tools - Objects / MacApp / MacApp 3.0a2 / CPlusIncludes / Memory.h < prev    next >
Text File  |  1991-05-01  |  10KB  |  346 lines

  1. /************************************************************
  2.  
  3. Created: Sunday, January 6, 1991 at 9:29 PM
  4.     Memory.h
  5.     C Interface to the Macintosh Libraries
  6.  
  7.  
  8.         Copyright Apple Computer, Inc.    1985-1990
  9.         All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13.  
  14. #ifndef __MEMORY__
  15. #define __MEMORY__
  16.  
  17. #ifndef __TYPES__
  18. #include <Types.h>
  19. #endif
  20.  
  21.  
  22. enum {
  23.  
  24.     maxSize = 0x800000,     /*Max data block size is 8 megabytes*/
  25.     defaultPhysicalEntryCount = 8,
  26.  
  27. /* values returned from the GetPageState function */
  28.     kPageInMemory = 0,
  29.     kPageOnDisk = 1,
  30.     kNotPaged = 2
  31. };
  32.  
  33. typedef long Size;          /* size of a block in bytes */
  34. typedef pascal long (*GrowZoneProcPtr)(Size cbNeeded);
  35.  
  36. struct Zone {
  37.     Ptr bkLim;
  38.     Ptr purgePtr;
  39.     Ptr hFstFree;
  40.     long zcbFree;
  41.     GrowZoneProcPtr gzProc;
  42.     short moreMast;
  43.     short flags;
  44.     short cntRel;
  45.     short maxRel;
  46.     short cntNRel;
  47.     short maxNRel;
  48.     short cntEmpty;
  49.     short cntHandles;
  50.     long minCBFree;
  51.     ProcPtr purgeProc;
  52.     Ptr sparePtr;
  53.     Ptr allocPtr;
  54.     short heapData;
  55. };
  56.  
  57. typedef struct Zone Zone;
  58. typedef Zone *THz;
  59.  
  60. struct MemoryBlock {
  61.     void * address;
  62.     unsigned long count;
  63. };
  64.  
  65. typedef struct MemoryBlock MemoryBlock;
  66.  
  67. struct LogicalToPhysicalTable {
  68.     MemoryBlock logical;
  69.     MemoryBlock physical[defaultPhysicalEntryCount];
  70. };
  71.  
  72. typedef struct LogicalToPhysicalTable LogicalToPhysicalTable;
  73.  
  74.  
  75. typedef short PageState;
  76. typedef short StatusRegisterContents;
  77.  
  78. #ifdef __cplusplus
  79. extern "C" {
  80. #endif
  81. #define GetApplLimit() (* (Ptr*) 0x0130)
  82. #pragma parameter __A0 GetZone
  83. pascal THz GetZone(void)
  84.     = 0xA11A; 
  85. #define SystemZone() (* (THz*) 0x02A6)
  86. #define ApplicZone() (* (THz*) 0x02AA)
  87. #define ApplicationZone() (* (THz*) 0x02AA)
  88. #pragma parameter __A0 NewHandle(__D0)
  89. pascal Handle NewHandle(Size byteCount)
  90.     = 0xA122; 
  91. #pragma parameter __A0 NewHandleSys(__D0)
  92. pascal Handle NewHandleSys(Size byteCount)
  93.     = 0xA522; 
  94. #pragma parameter __A0 NewHandleClear(__D0)
  95. pascal Handle NewHandleClear(Size byteCount)
  96.     = 0xA322; 
  97. #pragma parameter __A0 NewHandleSysClear(__D0)
  98. pascal Handle NewHandleSysClear(Size byteCount)
  99.     = 0xA722; 
  100. #pragma parameter __A0 HandleZone(__A0)
  101. pascal THz HandleZone(Handle h)
  102.     = 0xA126; 
  103. #pragma parameter __A0 RecoverHandle(__A0)
  104. pascal Handle RecoverHandle(Ptr p)
  105.     = 0xA128; 
  106. #pragma parameter __A0 RecoverHandleSys(__A0)
  107. pascal Handle RecoverHandleSys(Ptr p)
  108.     = 0xA528; 
  109. #pragma parameter __A0 NewPtr(__D0)
  110. pascal Ptr NewPtr(Size byteCount)
  111.     = 0xA11E; 
  112. #pragma parameter __A0 NewPtrSys(__D0)
  113. pascal Ptr NewPtrSys(Size byteCount)
  114.     = 0xA51E; 
  115. #pragma parameter __A0 NewPtrClear(__D0)
  116. pascal Ptr NewPtrClear(Size byteCount)
  117.     = 0xA31E; 
  118. #pragma parameter __A0 NewPtrSysClear(__D0)
  119. pascal Ptr NewPtrSysClear(Size byteCount)
  120.     = 0xA71E; 
  121. #pragma parameter __A0 PtrZone(__A0)
  122. pascal THz PtrZone(Ptr p)
  123.     = 0xA148; 
  124. #define GZSaveHnd() (* (Handle*) 0x0328)
  125. #define TopMem() (* (Ptr*) 0x0108)
  126. #pragma parameter __D0 MaxBlock
  127. pascal long MaxBlock(void)
  128.     = 0xA061; 
  129. #pragma parameter __D0 MaxBlockSys
  130. pascal long MaxBlockSys(void)
  131.     = 0xA461; 
  132. #pragma parameter __D0 StackSpace
  133. pascal long StackSpace(void)
  134.     = 0xA065; 
  135. #pragma parameter __A0 NewEmptyHandle
  136. pascal Handle NewEmptyHandle(void)
  137.     = 0xA166; 
  138. #pragma parameter __A0 NewEmptyHandleSys
  139. pascal Handle NewEmptyHandleSys(void)
  140.     = 0xA566; 
  141. #pragma parameter HLock(__A0)
  142. pascal void HLock(Handle h)
  143.     = 0xA029; 
  144. #pragma parameter HUnlock(__A0)
  145. pascal void HUnlock(Handle h)
  146.     = 0xA02A; 
  147. #pragma parameter HPurge(__A0)
  148. pascal void HPurge(Handle h)
  149.     = 0xA049; 
  150. #pragma parameter HNoPurge(__A0)
  151. pascal void HNoPurge(Handle h)
  152.     = 0xA04A; 
  153. #pragma parameter HLockHi(__A0)
  154. pascal void HLockHi(Handle h)
  155.     = {0xA064,0xA029}; 
  156. #if SystemSixOrLater
  157. #pragma parameter __D0 StripAddress(__D0)
  158. pascal Ptr StripAddress(void *theAddress)
  159.     = 0xA055; 
  160. #else
  161. pascal Ptr StripAddress(void *theAddress);
  162. #endif
  163. #pragma parameter __D0 Translate24To32(__D0)
  164. pascal Ptr Translate24To32(void *addr24)
  165.     = 0xA091; 
  166. pascal Handle TempNewHandle(Size logicalSize,OSErr& resultCode)
  167.     = {0x3F3C,0x001D,0xA88F}; 
  168. pascal Size TempMaxMem(Size& grow)
  169.     = {0x3F3C,0x0015,0xA88F}; 
  170. pascal long TempFreeMem(void)
  171.     = {0x3F3C,0x0018,0xA88F}; 
  172. /*  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  */
  173. pascal void TempHLock(Handle h,OSErr& resultCode)
  174.     = {0x3F3C,0x001E,0xA88F}; 
  175. pascal void TempHUnlock(Handle h,OSErr& resultCode)
  176.     = {0x3F3C,0x001F,0xA88F}; 
  177. pascal void TempDisposeHandle(Handle h,OSErr& resultCode)
  178.     = {0x3F3C,0x0020,0xA88F}; 
  179. pascal Ptr TempTopMem(void)
  180.     = {0x3F3C,0x0016,0xA88F}; 
  181. /*  Temporary Memory routines as they were known before System 7.0.  */
  182. pascal Size MFMaxMem(Size& grow)
  183.     = {0x3F3C,0x0015,0xA88F}; 
  184. pascal long MFFreeMem(void)
  185.     = {0x3F3C,0x0018,0xA88F}; 
  186. pascal Handle MFTempNewHandle(Size logicalSize,OSErr& resultCode)
  187.     = {0x3F3C,0x001D,0xA88F}; 
  188. pascal void MFTempHLock(Handle h,OSErr& resultCode)
  189.     = {0x3F3C,0x001E,0xA88F}; 
  190. pascal void MFTempHUnlock(Handle h,OSErr& resultCode)
  191.     = {0x3F3C,0x001F,0xA88F}; 
  192. pascal void MFTempDisposHandle(Handle h,OSErr& resultCode)
  193.     = {0x3F3C,0x0020,0xA88F}; 
  194. pascal Ptr MFTopMem(void)
  195.     = {0x3F3C,0x0016,0xA88F}; 
  196. pascal void InitApplZone(void)
  197.     = 0xA02C; 
  198. pascal void InitZone(GrowZoneProcPtr pgrowZone,short cmoreMasters,void *limitPtr,
  199.     void *startPtr); 
  200. #pragma parameter SetZone(__A0)
  201. pascal void SetZone(THz hz)
  202.     = 0xA01B; 
  203. #pragma parameter __D0 CompactMem(__D0)
  204. pascal Size CompactMem(Size cbNeeded)
  205.     = 0xA04C; 
  206. #pragma parameter __D0 CompactMemSys(__D0)
  207. pascal Size CompactMemSys(Size cbNeeded)
  208.     = 0xA44C; 
  209. #pragma parameter PurgeMem(__D0)
  210. pascal void PurgeMem(Size cbNeeded)
  211.     = 0xA04D; 
  212. #pragma parameter PurgeMemSys(__D0)
  213. pascal void PurgeMemSys(Size cbNeeded)
  214.     = 0xA44D; 
  215. #pragma parameter __D0 FreeMem
  216. pascal long FreeMem(void)
  217.     = 0xA01C; 
  218. #pragma parameter __D0 FreeMemSys
  219. pascal long FreeMemSys(void)
  220.     = 0xA41C; 
  221. #pragma parameter ResrvMem(__D0)
  222. pascal void ResrvMem(Size cbNeeded)
  223.     = 0xA040; 
  224. #pragma parameter ReserveMem(__D0)
  225. pascal void ReserveMem(Size cbNeeded)
  226.     = 0xA040; 
  227. #pragma parameter ReserveMemSys(__D0)
  228. pascal void ReserveMemSys(Size cbNeeded)
  229.     = 0xA440; 
  230. #pragma parameter __D0 MaxMem(__A1)
  231. pascal Size MaxMem(Size& grow)
  232.     = {0xA11D,0x2288}; 
  233. #pragma parameter __D0 MaxMemSys(__A1)
  234. pascal Size MaxMemSys(Size& grow)
  235.     = {0xA51D,0x2288}; 
  236. #pragma parameter SetGrowZone(__A0)
  237. pascal void SetGrowZone(GrowZoneProcPtr growZone)
  238.     = 0xA04B; 
  239. #pragma parameter SetApplLimit(__A0)
  240. pascal void SetApplLimit(void *zoneLimit)
  241.     = 0xA02D; 
  242. #pragma parameter MoveHHi(__A0)
  243. pascal void MoveHHi(Handle h)
  244.     = 0xA064; 
  245. #pragma parameter DisposPtr(__A0)
  246. pascal void DisposPtr(Ptr p)
  247.     = 0xA01F; 
  248. #pragma parameter DisposePtr(__A0)
  249. pascal void DisposePtr(Ptr p)
  250.     = 0xA01F; 
  251. pascal Size GetPtrSize(Ptr p); 
  252. #pragma parameter SetPtrSize(__A0,__D0)
  253. pascal void SetPtrSize(Ptr p,Size newSize)
  254.     = 0xA020; 
  255. #pragma parameter DisposHandle(__A0)
  256. pascal void DisposHandle(Handle h)
  257.     = 0xA023; 
  258. #pragma parameter DisposeHandle(__A0)
  259. pascal void DisposeHandle(Handle h)
  260.     = 0xA023; 
  261. pascal Size GetHandleSize(Handle h); 
  262. #pragma parameter SetHandleSize(__A0,__D0)
  263. pascal void SetHandleSize(Handle h,Size newSize)
  264.     = 0xA024; 
  265. #pragma parameter EmptyHandle(__A0)
  266. pascal void EmptyHandle(Handle h)
  267.     = 0xA02B; 
  268. #pragma parameter ReallocHandle(__A0,__D0)
  269. pascal void ReallocHandle(Handle h,Size byteCount)
  270.     = 0xA027; 
  271. #pragma parameter ReallocateHandle(__A0,__D0)
  272. pascal void ReallocateHandle(Handle h,Size byteCount)
  273.     = 0xA027; 
  274. #pragma parameter HSetRBit(__A0)
  275. pascal void HSetRBit(Handle h)
  276.     = 0xA067; 
  277. #pragma parameter HClrRBit(__A0)
  278. pascal void HClrRBit(Handle h)
  279.     = 0xA068; 
  280. pascal void MoreMasters(void)
  281.     = 0xA036; 
  282. #pragma parameter BlockMove(__A0,__A1,__D0)
  283. pascal void BlockMove(const void *srcPtr,void *destPtr,Size byteCount)
  284.     = 0xA02E; 
  285. #define MemError() (* (OSErr*) 0x0220)
  286. pascal void PurgeSpace(long& total,long& contig); 
  287. #pragma parameter __D0 HGetState(__A0)
  288. pascal char HGetState(Handle h)
  289.     = 0xA069; 
  290. #pragma parameter HSetState(__A0,__D0)
  291. pascal void HSetState(Handle h,char flags)
  292.     = 0xA06A; 
  293. #pragma parameter SetApplBase(__A0)
  294. pascal void SetApplBase(void *startPtr)
  295.     = 0xA057; 
  296. pascal void MaxApplZone(void)
  297.     = 0xA063; 
  298. #pragma parameter __D0 HoldMemory(__A0,__A1)
  299. pascal OSErr HoldMemory(void *address,unsigned long count)
  300.     = {0x7000,0xA05C}; 
  301. #pragma parameter __D0 UnholdMemory(__A0,__A1)
  302. pascal OSErr UnholdMemory(void *address,unsigned long count)
  303.     = {0x7001,0xA05C}; 
  304. #pragma parameter __D0 LockMemory(__A0,__A1)
  305. pascal OSErr LockMemory(void *address,unsigned long count)
  306.     = {0x7002,0xA05C}; 
  307. #pragma parameter __D0 LockMemoryContiguous(__A0,__A1)
  308. pascal OSErr LockMemoryContiguous(void *address,unsigned long count)
  309.     = {0x7004,0xA05C}; 
  310. #pragma parameter __D0 UnlockMemory(__A0,__A1)
  311. pascal OSErr UnlockMemory(void *address,unsigned long count)
  312.     = {0x7003,0xA05C}; 
  313. pascal OSErr GetPhysical(LogicalToPhysicalTable& addresses,unsigned long& physicalEntryCount); 
  314. #pragma parameter __D0 DeferUserFn(__A0,__D0)
  315. pascal OSErr DeferUserFn(ProcPtr userFunction,void *argument)
  316.     = 0xA08F; 
  317. #pragma parameter __D0 DebuggerGetMax
  318. pascal long DebuggerGetMax(void)
  319.     = {0x7000,0xA08D}; 
  320. pascal void DebuggerEnter(void)
  321.     = {0x7001,0xA08D}; 
  322. pascal void DebuggerExit(void)
  323.     = {0x7002,0xA08D}; 
  324. pascal void DebuggerPoll(void)
  325.     = {0x7003,0xA08D}; 
  326. #pragma parameter __D0 GetPageState(__A0)
  327. pascal PageState GetPageState(const void *address)
  328.     = {0x7004,0xA08D}; 
  329. #pragma parameter __D0 PageFaultFatal
  330. pascal Boolean PageFaultFatal(void)
  331.     = {0x7005,0xA08D}; 
  332. #pragma parameter __D0 DebuggerLockMemory(__A0,__A1)
  333. pascal OSErr DebuggerLockMemory(void *address,unsigned long count)
  334.     = {0x7006,0xA08D}; 
  335. #pragma parameter __D0 DebuggerUnlockMemory(__A0,__A1)
  336. pascal OSErr DebuggerUnlockMemory(void *address,unsigned long count)
  337.     = {0x7007,0xA08D}; 
  338. #pragma parameter __D0 EnterSupervisorMode
  339. pascal StatusRegisterContents EnterSupervisorMode(void)
  340.     = {0x7008,0xA08D}; 
  341. #ifdef __cplusplus
  342. }
  343. #endif
  344.  
  345. #endif
  346.